package com.cino.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 审计日志实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("audit_log")
public class SysAuditLog {
    
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 操作对象ID
     */
    @TableField("object_id")
    private String objectId;
    
    /**
     * 对象类型（表名）
     */
    @TableField("object_type")
    private String objectType;
    
    /**
     * 日志内容
     */
    @TableField("audit_content")
    private String auditContent;
    
    /**
     * 操作类型
     */
    @TableField("operation_type")
    private String operationType;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;
    
    /**
     * 日志保存状态：0代表失败，1代表成功
     */
    @TableField("audit_status")
    private Integer auditStatus;
    
    /**
     * 错误信息，可以把报错输出的log填进这里面
     */
    @TableField("error_message")
    private String errorMessage;
    
    /**
     * 耗时时间，计算原方法的耗时时间（毫秒）
     */
    @TableField("duration")
    private Long duration;
    
    /**
     * 要记录注解中的title值
     */
    @TableField("title")
    private String title;
    
    /**
     * 自定义存储表名（仅用于传递，不映射到数据库）
     * 用于在MyBatis拦截器中获取目标表名进行动态替换
     */
    @TableField(exist = false)
    private String storageTable;
}
